/* 
 Metodo para obtencao da posicao do scroll horizontal da pagina. Existem 3 formas 
 possiveis de se fazer isso a depender do browser em uso. Usando dessa forma, atendemos
 a grande maioria dos browsers.
*/
function getScrollLeft() {
	return filterScrollResults (
		window.pageXOffset ? window.pageXOffset : 0,
		document.documentElement ? document.documentElement.scrollLeft : 0,
		document.body ? document.body.scrollLeft : 0
	);
}

/* 
 Metodo para obtencao da posicao do scroll vertical da pagina. Existem 3 formas 
 possiveis de se fazer isso a depender do browser em uso. Usando dessa forma, atendemos
 a grande maioria dos browsers.
*/
function getScrollTop() {
	return filterScrollResults (
		window.pageYOffset ? window.pageYOffset : 0,
		document.documentElement ? document.documentElement.scrollTop : 0,
		document.body ? document.body.scrollTop : 0
	);
}

/*
 M?todo que decide qual dos tipos de posicionamento do scroll deve ser usado. Isso
 torna o script cross-browser.
*/
function filterScrollResults(pWin, pDocElem, pBody) {
	var lResult = pWin ? pWin : 0;
	
	if (pDocElem && (!lResult || (lResult > pDocElem))){
		lResult = pDocElem;
	}
		
	return pBody && (!lResult || (lResult > pBody)) ? pBody : lResult;
}

/*
 Reposiciona os scrolls da tela.
*/
function setScroll(pTopPos, pLeftPos){
	 window.scrollTo(pLeftPos, pTopPos);
}

/*
 Salva a posicao dos scrolls da tela.
*/
function saveScrollPosition(pXInput, pYInput){	
   //se os controles existem na tela.
   if (pXInput && pYInput){
	  pXInput.value = getScrollLeft();
	  pYInput.value = getScrollTop();		
   }
}

function submit_form(form,action,acao,target){

	//guarda a posi??o do scroll
	saveScrollPosition(form.unifwScrollLeft, form.unifwScrollTop);

   if (action != ""){
     form.action = action; 
   }
   if (acao != ""){
     form.ACAO.value = acao;
   }

   //target nao ? um campo obrigat?rio
   //if (target != ""){
     form.target = target;
   //}
   
   form.submit();

}
function cancelLink () {
  return false;
}

function disableLink (link) {
  if (link.onclick)
    link.oldOnClick = link.onclick;
  link.onclick = cancelLink;
  if (link.style)
    link.style.cursor = 'wait';

  return true;
}

function toggleLink (link) {
  disableLink (link);
  link.disabled = !link.disabled;

  return true;
}

function disableAllLlinks() {
    for (var i=0; i<document.links.length; i++) {
	toggleLink (document.links[i]);
     }
    return true;
}

function disableAllButtons(thedocument) {
  if (thedocument.all || thedocument.getElementById) {
    for (d = 0; d < thedocument.forms.length; d++) {
      var tempform = thedocument.forms[d];
      for (i = 0; i < tempform.length; i++) {
        var tempobj = tempform.elements[i];
        if (tempobj.type.toLowerCase() == "button" ||
            tempobj.type.toLowerCase() == "submit" ||
            tempobj.type.toLowerCase() == "reset"){
          tempobj.style.cursor = 'wait';
          tempobj.disabled = true;
        }
      }
    }
    return true;
  } else {
    return false;
  }
}

function disableAll(aBlockAll, aShowCursorWait){
  if (aShowCursorWait){
    mostrarAmpulheta();
  }
  if (aBlockAll){
    disableAllLlinks();
    disableAllButtons(document);
  }
  return true;
}

function mostrarAmpulheta(){
    document.body.style.cursor = 'wait';
}

function mostrarPonteiro(){
    document.body.style.cursor = 'arrow';
}

REALIZANDO_VALIDACOES = false;

function genericOnClick(aControl,aCausesValidators,aScreen,aAction,aTarget,aBlockAll, aShowCursorWait){
	if(REALIZANDO_VALIDACOES) {
		return false;
	}
	if (aCausesValidators){
		// define o nome da funcao de validacao do form.
		var function_validation = aControl.name + "_onSubmit(aControl)";
		
		var return_function_validation = false;
	
		// executa a funcao de validacao.	
		eval("return_function_validation =" + function_validation + ";");
	
		// verifica se o retorno da funcao de validacao eh false.
		if (!return_function_validation){
			// retorna false, para nao submeter.
			return false;
		}
	}
	
	// chama metodos que desabilita botoes e submete a pagina.
	return (disableAll(aBlockAll,aShowCursorWait) && submit_form(aControl,aScreen,aAction,aTarget));
	
}